JupyterHub為一個提供可多人撰寫的notebook的工具, 屬於撰寫notebook工具中的其中一個分支.
本次所安裝的JupyterHub版本為jupyterhub for kubernetes
, 這個版本是以kubernets為基礎然後將JupyterHub安裝在K8s之上, 一來容易安裝, 二來也可以善用K8s的特性.
其官網的網址在這裡:
https://zero-to-jupyterhub.readthedocs.io/en/latest/
在安裝JupyterHub之前, 已先安裝好NFS Server做為分享的儲存空間, 這個空間在安裝JupyterHub時會使用到, 資訊如下:
接下來我們就開始安裝JupyterHub
在每一個
K8s node上安裝nfs-client
$sudo apt install nfs-common
安裝nfs provisioner
這是要建立K8s的Storage Class, 之後建立pvc時可以讓K8s知道可以指定storage class名稱來創建所需的儲存空間
在Master node上執行下列指令
$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
$ helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=172.23.180.15 \
--set nfs.path=/mnt/Data/k8snfsshare
執行完成之後, 所產生的storage class名稱為nfs-client
然後還要將所產生的storage class設定為default storage class
kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storage class安裝與設定好了之後, 可以使用kubectl get sc
看一下內容
k8s@k8s-master:~$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client (default) cluster.local/nfs-subdir-external-provisioner Delete Immediate true 23d
安裝helm
因為安裝Jupyterhub是以heml進行安裝, 所以就來安裝一下
在Master node上執行下列指令
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
安裝 jupytorHub
先加入helm repo
$helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
$helm repo update
產生security token
這個token等一下會加在config.yaml參數檔中.
$openssl rand -hex 32
例如產生出來的token字串為
a1280b641f26b1cb683b5dab77ced6b74e8fe484625bce4f4529f4e43fc3ab6b
編輯 config.yaml
用你喜歡的文字編輯器, 我是使用vim
$vim config.yaml
這個檔案是jupyterhub的參數檔, 內容如下
proxy:
secretToken: "a1280b641f26b1cb683b5dab77ced6b74e8fe484625bce4f4529f4e43fc3ab6b"
service:
type: NodePort
singleuser:
storage:
dynamic:
storageClass: nfs-client
hub:
config:
Authenticator:
admin_users:
- amdin
service:
type: NodePort
cull:
enabled: false
然後執行下列指令進行安裝
helm upgrade --cleanup-on-fail \
--install myjhub jupyterhub/jupyterhub \
--namespace jhub \
--create-namespace \
--version=1.1.2 \
--values config.yaml
其中
開啟Jupyterhub首頁
安裝完成之後, 輸入下列指令確認所對應出來的nodeport是多少
$kubectl get svc -n jhub
如下圖, nodeport是32109
在網址列輸入 http://172.23.180.10:32109 , 可以看到Jupyterhub首頁
到這裡我們已安裝好JupyterHub.
https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
https://zero-to-jupyterhub.readthedocs.io/en/latest/
https://jupyterhub.github.io/helm-chart/